package com.ggshily.swf.tag;

import java.io.DataInput;
import java.io.IOException;

public interface ISWFTag
{
	public static final int TAG_End = 0;
	public static final int TAG_ShowFrame = 1;
	public static final int TAG_DefineShape = 2;
	public static final int TAG_FreeCharacter =3;
	public static final int TAG_PlaceObject = 4;
	public static final int TAG_RemoveObject = 5;
	public static final int TAG_DefineBits = 6;
	public static final int TAG_DefineButton = 7;
	public static final int TAG_JPEGTables = 8;
	public static final int TAG_SetBackgroundColor = 9;
	public static final int TAG_DefineFont = 10;
	public static final int TAG_DefineText = 11;
	public static final int TAG_DoAction = 12;
	public static final int TAG_DefineFontInfo = 13;
	public static final int TAG_DefineSound = 14;
	public static final int TAG_StartSound = 15;
	public static final int TAG_StopSound =16;
	public static final int TAG_DefineButtonSound = 17;
	public static final int TAG_SoundStreamHead = 18;
	public static final int TAG_SoundStreamBlock = 19;
	public static final int TAG_DefineBitsLossless = 20;
	public static final int TAG_DefineBitsJPEG2 = 21;
	public static final int TAG_DefineShape2 = 22;
	public static final int TAG_DefineButtonCxform = 23;
	public static final int TAG_Protect = 24;
	public static final int TAG_PathsArePostScript = 25;
	public static final int TAG_PlaceObject2 = 26;
	public static final int TAG_RemoveObject2 = 28;
	public static final int TAG_DefineShape3 = 32;
	public static final int TAG_DefineText2 = 33;
	public static final int TAG_DefineButton2 = 34;
	public static final int TAG_DefineBitsJPEG3 = 35;
	public static final int TAG_DefineBitsLossless2 = 36;
	public static final int TAG_DefineEditText = 37;
	// public static final int TAG_DefineVideo = 38;
	public static final int TAG_DefineSprite = 39;
	public static final int TAG_NameCharacter = 40;
	public static final int TAG_ProductInfo = 41; // non officially
	public static final int TAG_FrameLabel = 43;
	public static final int TAG_SoundStreamHead2 = 45;
	public static final int TAG_DefineMorphShape = 46;
	public static final int TAG_DefineFont2 = 48;
	public static final int TAG_ExportAssets = 56;
	public static final int TAG_ImportAssets = 57;
	public static final int TAG_EnableDebugger = 58;
	public static final int TAG_DoInitAction = 59;
	public static final int TAG_DefineVideoStream = 60;
	public static final int TAG_VideoFrame = 61;
	public static final int TAG_DefineFontInfo2 = 62;
	public static final int TAG_ExtDebuggerInfo = 63;
	public static final int TAG_EnableDebugger2 = 64;
	public static final int TAG_ScriptLimits = 65;
	public static final int TAG_SetTabIndex = 66;
	//public static final int TAG_DefineShape4 = 67; // use 83
	public static final int TAG_FileAttributes = 69;
	public static final int TAG_PlaceObject3 = 70;
	public static final int TAG_ImportAssets2 = 71;
	public static final int TAG_DoABC = 72;
	public static final int TAG_DefineFontAlignZones = 73;
	public static final int TAG_CSMTextSettings = 74;
	public static final int TAG_DefineFont3 = 75;
	public static final int TAG_SymbolClass = 76;
	public static final int TAG_Metadata = 77;
	public static final int TAG_DefineScalingGrid = 78;
	public static final int TAG_DoABC2 = 82;
	public static final int TAG_DefineShape4 = 83;
	public static final int TAG_DefineMorphShape2 = 84;
	public static final int TAG_DefineSceneAndFrameLabelData = 86;
	public static final int TAG_DefineBinaryData = 87;
	public static final int TAG_DefineFontName = 88;
	public static final int TAG_StartSound2 = 89;
	public static final int TAG_DefineBitsJPEG4 = 90;
	public static final int TAG_DefineFont4 = 91;
	/**
	 * @return the offset
	 */
	public int getOffset();

	/**
	 * @param offset the offset to set
	 */
	public void setOffset(int offset);

	/**
	 * @return the endOffset
	 */
	public int getEndOffset();

	/**
	 * @param endOffset the endOffset to set
	 */
	public void setEndOffset(int endOffset);

	/**
	 * @return the tag
	 */
	public int getTag();

	/**
	 * @param tag the tag to set
	 */
	public void setTag(int tag);

	public byte[] getData();

	public void parseData(DataInput di) throws IOException, Exception;
}
